package com.my.study.lock;

import lombok.Getter;
import lombok.Setter;

/**
 * @author: yidujun
 * @create: 2021/03/15 15:33
 */
@Setter
@Getter
public class RedisLockDefinitionHolder {

    private String businessKey;

    /**
     * 加锁时间（单位：秒 s）
     */
    private Long lockTime;

    /**
     * 上次更新时间（单位：毫秒 ms）
     */
    private Long lastModifyTime;

    /**
     * 保存当前线程
     */
    private Thread currentThread;

    /**
     * 总共尝试的次数
     */
    private int tryCount;

    /**
     * 当前尝试的次数
     */
    private int currentCount;

    /**
     * 更新的时间周期（毫秒），公式 = 加锁时间（转为毫秒） / 3
     */
    private Long modifyPeriod;

    public RedisLockDefinitionHolder(String businessKey,
                                     Long lockTime,
                                     Long lastModifyTime,
                                     Thread currentThread,
                                     int tryCount) {
        this.businessKey = businessKey;
        this.lockTime = lockTime;
        this.lastModifyTime = lastModifyTime;
        this.currentThread = currentThread;
        this.tryCount = tryCount;
        this.modifyPeriod = lockTime * 1000 / 3;
    }
}
